As distributed computing increases, tag servers are required to provide universally unique tags. Such tags (or "tokens") are employed to identify objects, events, geographic locations, etc. and are used in computer systems that are interconnected on a worldwide basis. Prior approaches for generating tags have tended to be single purpose i.e., telephone numbers (for telephones only); Library of Congress numbers (for documents only); social security numbers (limited to citizens of one country); etc.
Some prior approaches have used time or location as the basis for generation of unique tag values. However, clocks have synchronization, granularity, time zone and other problems; and nodes at locations can be moved, multiple servers can exist at one location, etc. In some prior approaches, fixed length fields were allocated to tag values. The fixed lengths prevented the tag values from being sufficiently extensible to take care of future requirements. Other approaches have used serial algorithms that: were unable to support parallel assignments or to respond to parallel, concurrent requests for tag assignments. Still other approaches required continued communication between tag generation systems to assure consistency and synchronization of tag values.
In U.S. patent application Ser. No. 07/963,885 now U.S. Pat. No. 5,414,841 to Bingham et al., an architecture and general purpose algorithm for the generation of unique tags is disclosed that is infinitely extensible, supports parallel assignments from an arbitrary large number of servers, and assures that uniqueness is maintained. In the Bingham et al architecture, no fixed length fields are required--thus providing a virtually boundless tag domain.
The basic reason for the creation of such an architecture is a need for unique, homogeneous identifiers to tie computer references to real world objects and events together, using a simple symbolic representation that allows easy identification, management and association. An intention of the architecture is to provide a tag that is usable on a worldwide basis by many users--while assuring a globally unique value for each tag.
The unique tag structure 10, as shown in FIG. 1 hereof, is a simple character string or byte array that comprises a sequence of concatenated fields. The tag comprises a delimiter field 12, a version field 14, a variable field 16 and an error checking field 18. Token delimiter field 12 provides a means by which a recognition program can recognize the start of a tag. The delimiter character is a symbol that is relatively uncommon in text; is available in most computer coded character sets; is operating system neutral (avoids sequences such as blanks that are automatically discarded in some computer systems); is visible to the human eye in printable and common character sets; and is common across the universe of connect systems. While there is no character which meets all of these requirements, a preferred symbol is the "&lt;". The delimiter character serves as both a human and a machine readable initial indicator of the beginning of a tag.
Tag version field 14 follows delimiter field 12, identifies a unique token version and is generally a numeric field using values 0-9 across the universe of unique tag values. The value of version field 14 changes very rarely, for example, when the available values in variable field 16 reach a point where it is determined that it is worthwhile to commence a new version--and thus a new series of values in variable field 16.
Variable field 16 includes a string of characters and is unique for a given tag version and thus provides the unique identification for each tag. Both the string of characters in version field 14 and in variable field 16 are virtually unlimited in size. Error field 18 is employed for error checking purposes and may include a standard error check value (e.g. CRC, checksum, parity, etc.).
When utilizing such a tag architecture 10 in a globally accessible tag server, several problems may be encountered. Tag values may often be requested by many clients at the same time, resulting in a long queue of client requests. The length of the queue--and thus the waiting time to receive a response may become quite long. It is clear that any system which results in long waiting times for assignment of tag values will not be long utilized by the clients.
Next, any tag server that is to serve as a center for unique tag values must assure that, under all conditions and for the foreseeable future, all tag values are unique. While such uniqueness can be assured by detailed logging procedures, such logging actions require both substantial computational capability and data recovery speeds that are not compatible with short waiting times for tag assignments.
The tag server must also be able to recover from a system failure almost instantly, with no loss of data integrity and at low cost. This cannot be guaranteed in the case where detailed assignment/user records are used with intermediate processing employed to assure a "hardening" of such data during the assignment process. Hardening of data requires the reading of data values to non-volatile memory, such as one or more disk drives, to assure its availability in the event of a subsequent system failure.
Accordingly, it is an object of this invention to provide an improved tag server system and method that assures little delay to a client requesting service.
It is another object of this invention to provide a tag server system and method wherein logging procedures are minimized during the process of tag assignments.
It is another object of this invention to provide an improved tag server system wherein system recovery in the event of a malfunction is rapid and requires short processing procedures.
It is a further object of this invention to provide an improved tag server which has the capacity to handle multiple client requests for tag assignments while assuring globally unique tag values.